package com.study.reflect.example.ex04;

import java.lang.reflect.Proxy;

import org.junit.Test;

/**
* @Name: UserDaoTest
* @Description: 用户信息操作接口测试类
* @Author: 李超	lc_jack@foxmail.com
* @CreateDate: 2017-1-17 下午8:44:24 
* @Version: V1.0
 */
public class UserDaoTest {
	
	@Test
	public void test() {
		//基本用户操作
		UserDao userDao = new UserDaoImpl() ;
		userDao.save() ;
		userDao.delete() ;
		userDao.query() ;
		userDao.update() ;
		System.out.println("==================");
		//真实需求：
		//1、操作前，检查是否有操作权限 ；
		//2、记录操作日志；
		MyInvocationHandler handler = new MyInvocationHandler(userDao) ;
		//创建代理对象
		UserDao proxy = (UserDao) Proxy.newProxyInstance(userDao.getClass().getClassLoader(), 
							   userDao.getClass().getInterfaces(), 
							   handler) ;
		//执行代理方法
		proxy.save() ;
		proxy.delete() ;
		proxy.query() ;
		proxy.update() ;
	}

}
